/*
 * 快慢指针
 *
 * 输入n个int
 * 要求从n个int中找出一个区间，里面必须有m个数字
 * 且区间最短
 * 输出区间的begin,end
 * */
#include <bits/stdc++.h>
using namespace std;
/*
改进： m取值最大是2000 可以用哈希表，这样更快，不要用map
每次cnt()函数是很慢的，用hash可以解决。
*/
int n,m;
int num[1000001];
//low = fast 所以temp取1 ，现在是1个数字
int temp=1;//当前区间出现了temp个不相同的数字，如果==m，就立马保存长度到ret中和res比较
//如果temp<m，就继续后移fast，直到满足m个: 此时 num[low]看看在区间里是不是“已经存在”
// 已经存在，那就low++ temp还是m不用变，如果此时不存在了，那就记下来low,fast ，和res比较存入，然后！！:fast++ 开始维护区间使得其temp再次等于m
//总之：维护区间使其temp为m
int b,e,bestlen;
map<int,int> range;
int cnt(){
    int t = 0;//注意 c++98不支持auto 
    for(map<int,int>::iterator it = range.begin();it!=range.end();it++){
        if (it->second>0) t++;
    }
    return  t;
}
int main()
{
  //  freopen("data.txt","r",stdin);
    scanf("%d %d",&n,&m);
    for(int i=0;i<n;i++) scanf("%d",&num[i]);
	bestlen = n+1;
    int low = 0,fast = low; //初始状态应判断如果0~n-1共n个都是的情况
    while(low<=fast&&fast<n){
        range[num[fast]]++;
        temp = cnt();//temp等于区间内出现次数至少为1的数字个数
        if (temp==m){
            //此时是m个
            if (bestlen>fast-low+1){
                bestlen = fast-low+1;
                b = low;
                e = fast;
            } else{
                range[num[low]]--;
                low++;
            }
        } else fast++;
    }
    cout<<b+1<<" "<<e+1;
    return 0;
}